package com.balabala.gym_user.controller.admin;

import com.balabala.gym_enum.ResultEnum;
import com.balabala.gym_user.pojo.dto.AddRecordDTO;
import com.balabala.gym_user.pojo.dto.AddUserVipCardDto;
import com.balabala.gym_user.pojo.dto.UserVipCardQueryDTO;
import com.balabala.gym_user.pojo.dto.UserVipCardStatusDTO;
import com.balabala.gym_user.pojo.vo.UserVipCardPageVO;
import com.balabala.gym_user.service.UserVipCardService;
import com.balabala.result.Result;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @Author 何涛
 * @Date: 2023/05/01/ 17:33
 * @description 用户会员卡相关接口
 */
@RestController
@RequestMapping("/admin/userVipCard")
@Api(tags = "用户会员卡关系后台接口")
@Slf4j
@CrossOrigin
public class UserVipCardController {
    @Autowired
    UserVipCardService userVipCardService;

    @PostMapping("userVipCardPageList")
    @ApiOperation("查看用户会员卡分页信息")
    public Result userVipCardPageList(@RequestBody UserVipCardQueryDTO userVipCardQueryDto)
    {
        log.info("查看用户会员卡分页信息：{}",userVipCardQueryDto.toString());
        PageInfo<UserVipCardPageVO> userVipCardPageVoPageInfo=userVipCardService.userVipCardPageList(userVipCardQueryDto);
        return Result.ok(userVipCardPageVoPageInfo.getList(),userVipCardPageVoPageInfo.getTotal());
    }

    @PutMapping("changeUserVipCardStatus")
    @ApiOperation("改变用户会员卡状态")
    public Result changeUserVipCardStatus(@RequestBody UserVipCardStatusDTO userVipCardStatusDto)
    {
        log.info("改变用户会员卡状态,信息为：{}",userVipCardStatusDto.toString());
        return Result.ok(ResultEnum.GENERALLY_SUCCESS,userVipCardService.changeUserVipCardStatus(userVipCardStatusDto));
    }

    @GetMapping("getUserCardInfo/{user_card_id}")
    @ApiOperation("根据用户会员卡id查看用户会员卡信息")
    public Result getUserCardInfo(@PathVariable Long user_card_id)
    {
        log.info("查看用户会员卡信息，用户会员卡id：{}",user_card_id);
        return Result.ok(ResultEnum.GENERALLY_SUCCESS,userVipCardService.findUserCardInfo(user_card_id));
    }

    @GetMapping("getUserCardInfoByUserId")
    @ApiOperation("根据用户id查询用户会员卡信息")
    public Result getUserCardInfoByUserId(@RequestParam Long userId)
    {
        log.info("查看用户会员卡，用户id：{}",userId);
        return Result.ok(ResultEnum.GENERALLY_SUCCESS,userVipCardService.getUserCardInfoByUserId(userId));
    }

    @PostMapping("addUserVipCard")
    @ApiOperation("添加用户会员卡信息")
    public Result addUserCardInfo(@RequestBody AddUserVipCardDto addUserVipCardDto)
    {
        log.info("添加用户会员卡，用户id：{}，会员卡id：{}",addUserVipCardDto.getUserId(),addUserVipCardDto.getCardId());
        userVipCardService.addUserCardInfo(addUserVipCardDto);
        return Result.ok();
    }

    @PostMapping("/renewal")
    @ApiOperation("会员卡续费")
    public Result renewal(@RequestBody AddRecordDTO addRecordDTO)
    {

        return Result.judge(userVipCardService.renewal(addRecordDTO));
    }


}
